#include <stdio.h>
#include <unistd.h>
#include <signal.h>

void sig_usr(int signo)
{
    if(SIGUSR1 == signo)
    {
        printf("收到了 SIGUSR1信号\n");
    }else if(SIGUSR2 == signo)
    {

        printf("收到了 SIGUSR2信号\n");
    }else
    {
        printf("收到了未捕捉的信号\n");
    }
}
int main(int argc, char *const *argv)
{
    pid_t pid;

    printf("开始学习本书\n");

    //signal(SIGHUP, SIG_IGN);
    
/*
    pid = fork();

    if (pid < 0)
    {
        printf("fork 程序出错 \n");
    }
    else if (pid == 0)
    {
        // 若执行的是子进程，条件就会满足
        printf("开始执行子进程\n");

        // 创建新的session
        setsid();
        for( ; ; )
        {
            sleep(1);
            printf("子进程休息1秒\n");
        }

        printf("out of program\n");
        return 0;
    }
    else
    {
        // 父进程
        for( ; ; )
        {
            sleep(1);
            printf("父进程休息1秒\n");
        }
        printf("out of program\n");
        return 0;

    }
    
*/ 
    if(signal(SIGUSR1, sig_usr) == SIG_ERR)
    {
        printf("无法捕捉SIGUSR1信号\n");
    }

    if(signal(SIGUSR2, sig_usr) == SIG_ERR)
    {
        printf("无法捕捉SIGUSR1信号\n");
    }


    for( ; ; )
    {
        sleep(1);
        printf("进程休息1秒\n");
    }
    
    printf("out of program\n");
    return 0;
}
